﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LIM.model;
using LIM.controller;


namespace LIM.forms.uc_DanhMuc_ChiTieu
{
    public partial class uc_DanhMuc_ChiTieu_ThongTinChiTieu : UserControl
    {
        DanhMucLoaiMauController _DanhMucLoaiMauController = new DanhMucLoaiMauController();
        radForm_DanhMuc_ChiTieu parentForm = null;
        public uc_DanhMuc_ChiTieu_ThongTinChiTieu()
        {
            InitializeComponent();
            this.radDropDownList_LoaiMau.DataSource = _DanhMucLoaiMauController.LayDanhSach_LoaiMau();
            this.radDropDownList_PhongBan.DataSource = _DanhMucLoaiMauController.LayDanhSach_PhongBan();
        }
        void parentForm_OnRowChange()
        {
            if (parentForm.SelectedEntity != null)
            {
                BindControls();
            }
        }


        private void radMenuItem_LuuLai_Click(object sender, EventArgs e)
        {
            if (!IsValidatedSaving())
                return;

            Application.UseWaitCursor = true;
            if (parentForm.SelectedEntity == null)
            {
                parentForm.SelectedEntity = new tbl_DanhMuc_ChiTieu();
            }
            //parentForm.SelectedEntity.MaChiTieu = this.radTextBox_MaChiTieu.Text.Trim();
            parentForm.SelectedEntity.TenGoi = this.radTextBox_TenChiTieu.Text.Trim();
            parentForm.SelectedEntity.PhuongPhap = this.radTextBox_PhuongPhap.Text;
            parentForm.SelectedEntity.SoNgayThucHien =int.Parse(this.numericUpDown_SoNgayThucHien.Value.ToString());
            parentForm.SelectedEntity.RowIDLoaiMau = (int)this.radDropDownList_LoaiMau.SelectedValue;
            parentForm.SelectedEntity.MaPhongBan = this.radDropDownList_PhongBan.SelectedValue.ToString() ;


            if (parentForm.SelectedEntity.RowID == 0)
            {
                parentForm.SelectedEntity.NgayTao = parentForm.controller.GetCurrentDateTimeFromDatabaseServer();
                parentForm.SelectedEntity.NguoiTao = InitUserInfos.UserName;
            }
            parentForm.SelectedEntity.NgayCapNhat = parentForm.controller.GetCurrentDateTimeFromDatabaseServer();
            parentForm.SelectedEntity.NguoiCapNhat = InitUserInfos.UserName;

            string _mess = "";
            int _code = 0;
            if (parentForm.controller.SaveObject(parentForm.SelectedEntity, out _mess, out _code))
            {
                RadDesktopAlert_SavingStatus.ShowAlertSaveSuccess("Thông tin Chỉ tiêu", "Đã lưu thành công!");
                radTextBox_MaChiTieu.Text = parentForm.SelectedEntity.MaChiTieu;
                parentForm.RefreshData();
            }
            else
                MessageBox.Show(_mess);

        }

        private void uc_DanhMuc_ChiTieu_ThongTinChiTieu_Load(object sender, EventArgs e)
        {
            parentForm = (radForm_DanhMuc_ChiTieu)this.ParentForm;
            if (parentForm != null)
            {
                parentForm.OnRowChange += new radForm_DanhMuc_ChiTieu.GridViewDoubleClick(parentForm_OnRowChange);
            }
        }
        protected void BindControls()
        {
            if (parentForm.SelectedEntity == null)
                parentForm.SelectedEntity = new tbl_DanhMuc_ChiTieu();
            radTextBox_MaChiTieu.Text = parentForm.SelectedEntity.MaChiTieu;
            radTextBox_TenChiTieu.Text = parentForm.SelectedEntity.TenGoi;
            radDropDownList_LoaiMau.SelectedValue = parentForm.SelectedEntity.RowIDLoaiMau;
            radTextBox_PhuongPhap.Text = parentForm.SelectedEntity.PhuongPhap;
            numericUpDown_SoNgayThucHien.Value = parentForm.SelectedEntity.SoNgayThucHien != null ? parentForm.SelectedEntity.SoNgayThucHien.Value : 0;

            BindControlsNgayCapNhat();
        }

        private void BindControlsNgayCapNhat()
        {
            this.radLabel_NgayTao.Text = "";
            this.radLabel_NgayCapNhat.Text = "";
            this.radLabel_NhanVienTao.Text = "";
            this.radLabel_NhanVienCapNhat.Text = "";

            if (parentForm.SelectedEntity.NgayTao.HasValue)
                this.radLabel_NgayTao.Text = "Ngày tạo: " + parentForm.SelectedEntity.NgayTao.Value.ToString("dd/MM/yyyy hh:mm");
            if (parentForm.SelectedEntity.NgayCapNhat.HasValue)
                this.radLabel_NgayCapNhat.Text = "Ngày cập nhật: " + parentForm.SelectedEntity.NgayCapNhat.Value.ToString("dd/MM/yyyy hh:mm");
            if (!string.IsNullOrEmpty(parentForm.SelectedEntity.NguoiTao))
                this.radLabel_NhanVienTao.Text = "Người tạo: " + parentForm.SelectedEntity.NguoiTao;
            if (!string.IsNullOrEmpty(parentForm.SelectedEntity.NguoiCapNhat))
                this.radLabel_NhanVienCapNhat.Text = "Người cập nhật: " + parentForm.SelectedEntity.NguoiCapNhat;
        }

        private bool IsValidatedSaving()
        {
            //if (string.IsNullOrEmpty(this.radTextBox_MaChiTieu.Text.Trim()))
            //{
            //    MessageBox.Show("Mã chỉ tiêu không được để trống", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    return false;
            //}
            if (string.IsNullOrEmpty(this.radTextBox_TenChiTieu.Text.Trim()))
            {
                MessageBox.Show("Tên chỉ tiêu không được để trống", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (string.IsNullOrEmpty(this.radTextBox_PhuongPhap.Text.Trim()))
            {
                MessageBox.Show("Phương pháp không được để trống", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (string.IsNullOrEmpty(this.numericUpDown_SoNgayThucHien.Text.Trim()))
            {
                MessageBox.Show("Số ngày thực hiện không được để trống", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (this.radDropDownList_LoaiMau.SelectedIndex < 0)
            {
                MessageBox.Show("Cần phải chọn một Loại Mẫu", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }
        private bool IsValidatedDeleting()
        {
            if (parentForm.SelectedEntity == null)
            {
                MessageBox.Show("Cần phải chọn chỉ tiêu cần xóa", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else if (parentForm.SelectedEntity.RowID == 0)
            {
                MessageBox.Show("Cần phải chọn chỉ tiêu cần xóa", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        private void radMenuItem_XoaBo_Click(object sender, EventArgs e)
        {
            if (!IsValidatedDeleting())
                return;

            if (MessageBox.Show("Chỉ tiêu " + parentForm.SelectedEntity.TenGoi + " sẽ bị xóa." + Environment.NewLine + "Xin xác nhận lại việc có tiếp tục xóa hay không?", "Xóa chỉ tiêu", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                string _mess = "";
                if (parentForm.controller.DeleteObject(parentForm.SelectedEntity, out _mess))
                {
                    RadDesktopAlert_SavingStatus.ShowAlertDeleteSuccess("Thông tin chỉ tiêu", "Đã xóa thành công chỉ tiêu!");
                    parentForm.RefreshData();
                    parentForm.SelectedEntity = new tbl_DanhMuc_ChiTieu();
                    BindControls();
                }
                else
                    MessageBox.Show(_mess);
            }
        }
    }
}
